package com.hyt.it.ogt.kq.service.gov.mapper;

import com.baomidou.mybatisplus.core.mapper.BaseMapper;
import com.hyt.it.ogt.kq.service.gov.model.dto.arrange.TimeSubjectCandidateDTO;
import com.hyt.it.ogt.kq.service.gov.model.dto.arrange.TimeSubjectDTO;
import com.hyt.it.ogt.kq.service.gov.model.entity.TimeSubject;
import com.hyt.it.ogt.kq.service.gov.roomdata.model.gce.GceSubject;
import com.hyt.it.ogt.kq.service.gov.roomdata.model.obt.ObtSubject;

import java.util.List;
import java.util.Map;

/**
 * <p>
 * 批次科目表 Mapper 接口
 * </p>
 *
 * @author huangyh
 * @since 2021-03-08
 */
public interface TimeSubjectMapper extends BaseMapper<TimeSubject> {

    /**
     * 删除科目批次
     * @param taskId
     * @param timeId
     * @param subjectIds
     * @return
     */
    int deleteTimeSubjectBySubjectIds(String taskId,String timeId,String subjectIds);

    /**
     * 删除批次考卷
     * @param paperId
     * @return
     */
    Integer deleteTimePaper(String paperId);


    /**
     * 查询科目绑定的批次
     * @param taskId
     * @param subjectId
     * @return
     */
    List<TimeSubject> selectTimeSubjectBySubjectId(String taskId, String subjectId);

    /**
     * 查询科目绑定的批次bySubjectIds
     * @param taskId
     * @param subjectIds
     * @return
     */
    List<TimeSubject> selectTimeSubjectBySubjectIds(String taskId, String subjectIds);

    /**
     * 科目信息
     * @param taskId
     * @param timeId
     * @return
     */
    List<ObtSubject> getTimeSubjectList(String taskId, String timeId);

    /**
     * 获取GCE考务包的科目信息，用于生成考务包
     * @param taskId 考试任务id
     * @param timeId 批次id
     * @return GCE考务包的科目信息
     */
    List<GceSubject> getGceSubjectList(String taskId, String timeId);

    /**
     * 查询当前任务下的所有科目id
     * @param taskId
     * @return
     */
    List<String> selectSubjectIds(String taskId);

    /**
     * 获取批次科目DTO
     * @param taskId 考试任务id
     * @return 批次科目DTO
     */
    List<TimeSubjectCandidateDTO> getTimeSubjectCandidateDTO(String taskId);

    /**
     * 获取批次科目DTO
     * @param taskId 考试任务id
     * @return 批次科目DTO
     */
    List<TimeSubjectDTO> getTimeSubjectDTO(String taskId);

    int countByTime(String taskId, String timeId);

    int countSubjectByTime(String taskId);
}
